22 Oct 2025
Django community aggregator: Community blog posts
My favorite Django packages
My favorite Django packages
Inspired by other posts I also wanted to write up a list of my favorite Django packages. Since I've been working in this space for so long and since I'm maintaining quite a large list of packages I worry a bit about tooting my own horn too much here; that said, the reasons for choosing some packages hopefully speak for themselves.
Also, I'm sure I'm forgetting many many packages here. Sorry for that in advance.
Core Django
- speckenv: Loads environment variables from
.envand automatically converts them to their Python equivalent ifast.literal_evalunderstands it. Also contains implementations for loading database, cache, email and storage configuration from environment variables (similar to dj-database-url). I added this functionality to speckenv when some of the available environment configuration apps' maintenance state was somewhat questionable. - django-cors-headers: CORS header support for Django. This would be a nice addition to Django itself.
- sentry-sdk: I'm using Sentry in almost all projects.
- django-template-partials: Template partials for Django! This has been added to the upcoming 6.0 release of Django. While the Django template language has always been evolving and improving, this feels like the first larger step in a long time. As I and others have said, the combination of htmx and django-template-partials is really really nice. It isn't surprising at all that htmx is so well loved in the Django community.
- django-s3-storage: Yes, django-storages exist, but I prefer django-s3-storage because of its focus and simplicity.
- django-imagefield: Image field which validates images deeply, and supports pre-rendering thumbnails etc. I understand why Django only superficially validates uploaded images because of the danger of denial of service attacks, but I'd rather not have files on the sites I manage which the great Pillow library doesn't support.
- psycopg: Whenever I can I work with PostgreSQL, and psycopg is how I interface with the database.
Data structures
- django-tree-queries: My favorite way to work with trees except when talking about real trees.
- django-translated-fields: My preferred way to do model-level internationalization.
CMS building
I have been working on FeinCMS since 2009. So, it shouldn't surprise anyone that this is still my favorite way to build CMS on top of Django. I like that it's basically a thin layer on top of Django's administration interface and doesn't want to take over the whole admin interface or even the whole website.
- feincms3: The modern, focussed foundation replacing FeinCMS.
- django-content-editor: The admin interface extension providing core components to build content editing interfaces.
- django-prose-editor: A nice HTML editor by yours truly.
- django-json-schema-editor: JSON schema-based editing using @json-editor/json-editor.
Working with external content
- micawber: Micawber is my favorite tool to embed third party content (YouTube, Vimeo, whatever) when feincms3's own very limited embedding functionality is insufficient.
- feincms3-cookiecontrol: Everyone likes cookie banner (or not). feincms3-cookiecontrol implements not just an informative cookie banner, but actually supports not embedding tracking scripts and third party content unless the user consented, either a blanket or a per-provider consent for embedded media. It does NOT support the very annoying interface where you have to deselect each tracking service individually.
PDF generation
- Reportlab: Reportlab is nice if you need fine-grained control over PDF generation. Reportlab has created more than 10'000 invoices for the company I work at, so I'm definitely grateful for it :-)
- Weasyprint: I have been using Weasyprint more and more for generating PDFs. Using HTML and CSS can be nicer than using Reportlab's Platypus module. Weasyprint doesn't instrument a webbrowser to produce PDFs but instead implements the rendering engine itself. It works really well.
Testing and development
- I actually do like unittest. I have started using pytest somewhat more often because using
-k keywordto filter tests to run is great. - factory-boy: This package has always treated me well when creating data for tests.
- playwright: Playwright is the end-to-end test browser automation library I prefer.
Last but not least, I really like django-debug-toolbar. So much, that I'm even helping with the maintenance since 2016.
Serving
We mostly use Kubernetes to serve websites these days. Inside the pods, I'm working with the granian RSGI/ASGI server and with blacknoise for serving static files.
22 Oct 2025 5:00pm GMT
An Introduction of sorts
I realised this week after a short conversation on Mastodon that I haven't ever shared my personal Django journey, so hear goes!
As a recent graduate in 2012, I first encounter Django while working at Ocado Technology, tasked with building internal tools for other developers. I was shown the ropes of Django by Ben Cardy (@benbacardi) and Mike Bryant. Essentially this was about putting a frontend to some scripts which would provision users and allow them to upload their ssh keys. This progressed to automating application provisioning with some hackery using the rubypython package if I remember correctly and storing data in an LDAP database. I started using Django 1.4, explored packaging these projects into .deb files, setup an internal pypi instance and tried to created a unified UI package across multiple projects. Finally we did start to open source a few packages on Github.
2015 saw me leave Ocado to join a small charity startup using Django. Here I joined Bruno Alla (@browniebroke) building out a Django application hosted on heroku. For a long time it was just us two as developers, but this eventually grew to a team of 6. Again we published a few packages that we could split from the main codebase, although most of these have not grown in popularity. It was around this time I was becoming more aware of the mailing lists and contributing back to packages we used in the ecosystem.
I left the startup in 2019 to go freelance, setting up Software Crafts, my own limited company. At the time I still wasn't sure what my ideal client would be and agonised over this for years before realising Django was the through line of my career and my passion when it came to building software! I have had numerous clients over the last 6 years, mostly with small teams or startups, either building something fresh or continuing off from where other developers had left with little to zero handover. During this time I realised the community had started a Discord server and so I joined in July 2022 and started answering questions and helping out.
The next year in 2023 I was asked to be a moderator and also attended DjangoCon Europe for the first time, which was an absolute blast. It was in this year that I started hosting a Django Social event each month in Cambridge, so generally getting very much more involved in the community. I also started donating regularly to the DSF mid 2023. 2024 saw me start contributing in the form code when I applied and got into one of the Djangonaut Sessions.
Towards the end of 2024 I proposed the Online Community Working Group which after many rounds of comments and iteration was approved earlier this year. We are still getting the ball rolling on this, but I hope to have an announcement before the year finishes! I also had the opportunity to attend DjangoCon Europe again this year which was again was lovely to meet new friends from online and old friends from the last conference, as well as take the stage for a lighting talk on the last day. I recently was also made an admin of the Discord server! In terms of my career, 2024 saw me accept the opportunity to become co-founder of a new startup which I have been building this year. This of course is built using Django and leveraging the latest patterns (HTMX & partials etc).
I see a bright future for Django, I'm going to continue to contribute my time, energy and finance to the community, currently focusing on improving our online spaces which is key for those who cannot join the conferences or other in-person meetups (for which there are many). I also hope to get to more in-person events myself in due course!
22 Oct 2025 5:00am GMT
21 Oct 2025
Django community aggregator: Community blog posts
Django on the Med - Paolo Melchiorre
🔗 Links
- Django on the Med and #DjangoOnTheMed hashtag
- Paolo Melchiorre's Website and LinkedIn
- My Django on the Med post
- Django GitHub Issues for Django on the Med
- django-rapid and django-bolt
- Django: One ORM to Rule Them All
📦 Projects
📚 Books
- How Infrastructure Works by Deb Chachra
- Django for Professionals by William Vincent
- More Everything Forever by Adam Becker
🎥 YouTube
Sponsor
This episode was brought to you by HackSoft, your development partner beyond code. From custom software development to consulting, team augmentation, or opening an office in Bulgaria, they're ready to take your Django project to the next level!
21 Oct 2025 5:00pm GMT